home *** CD-ROM | disk | FTP | other *** search
/ Die Speccy' 97 / Die Speccy' 97.iso / amiga_system / the_aminet / comm / cnet / revive.lha / ReVive < prev    next >
Text File  |  1995-09-30  |  9KB  |  158 lines

  1. /**************************************************************************\
  2.                 $VER: ReVive, v2.0 (29-Sep-95) by Dotoran!
  3. \**************************************************************************/
  4. options results;signal on SYNTAX;signal on ERROR;signal on IOERR;call IERROR
  5. tr=transmit;se=sendstring;gc=getchar;gu=getuser;gs=getscratch;call RSDATA
  6. a='rexxsupport.library';if ~show('l',a) then if ~addlib(a,0,-30) then exit
  7.  
  8. START:
  9.   gu 2400088;acts=result;gu 1202244;args=result-1
  10.   if args>0 then do;a=""
  11.     do i=0 to args-1;gu 1302307+(i*61);a=a||result" ";end i
  12.     tot=PARSE(a,1,acts);signal REVIVE2;end
  13.   call TITLE;se "n1c6Want Instructions? c7[cbNoc7]c9: ";gc;a=result
  14.   if a="Y" then do;tr "caYesc6!";signal DOCS;end;else tr "cbNoc6."
  15.  
  16. REVIVE:
  17.   se "n1cbReVive c6Which cbID c6Numberc7(c6sc7)c6? c7[caENTERc6=caScanc6/cdQc6=cdQuitc7]c9: cbi0 30}"
  18.   gu 70;a=result;if upper(a)="Q" then exit;else tot=PARSE(a,1,acts)
  19.   if tot=0 then do;se "n1c6Scanningc9: c7[cd0000c7]<5";tot=0;it.=""
  20.     do i=1 to acts;loadscratch i;st=result;savescratch (-i)
  21.       getscratch 1;handle=result;se "cd"right("cb"i,7,"0")"<4"
  22.       if handle="!" then do;tot=tot+1;it.tot=i;it.0=it.0" "it.tot;end
  23.     end i;tr ">6c9Finishedc6!"
  24.     if tot=0 then tr "n1c9No c9Deleted c6Accounts Found!"
  25.       else tr "n1c9Deleted cbID c6Numbersc9: cb"it.0
  26.     signal REVIVE;end
  27.  
  28. REVIVE2:
  29.   call open(f1,"SysData:ReViveDB","r")
  30.     do i=1 to tot;index=(it.i*38)-38
  31.       tr "f1caAttempting c6to cbReVive cfID # cc: ca"it.i
  32.       call seek(f1,index,"b")
  33.       uid=translate(strip(readch(f1,4),"t","00"x),reverse(bb),bb)
  34.       handle=translate(strip(readch(f1,20),"t","00"x),reverse(bb),bb)
  35.       password=translate(strip(readch(f1,14),"t","00"x),reverse(bb),bb)
  36.       if handle="!" then handle="REVIVE"it.i
  37.       if password="" then password="REVIVE"it.i
  38.       if uid="SID" then uid=it.i
  39.       loadscratch it.i;getscratch 1;handle2=result
  40.       getscratch 3;realname=result;getscratch 6;street=result
  41.       getscratch 4;citystate=result;getscratch 5;zipcode=result
  42.       getscratch 9;voice=result;getscratch 10;data=result
  43.       getscratch 11;lastcall=result;getscratch 39;maildir=result
  44.       getuser 1100000;year=result;getuser 1100001;month=result
  45.       getuser 1100002;day=result
  46.       if handle2~="!" then do
  47.         tr "n1c6This is c9NOT c6a cbdeleted c6account!n1"
  48.         tr "c6User's Handle    c9: ca"handle2
  49.         tr "c6User's Real Name c9: cb"realname
  50.         tr "c6User's Password  c9: cd"password
  51.         se "n1c7Press cdany key c7now...g1"
  52.         savescratch (-it.i);iterate i;end
  53.       tr "n1r1caData Found Inside Account r0cc:n1"
  54.       tr "c2     User's Real Name     cc: c2"realname
  55.       tr "ca     Street Address       cc: ca"street
  56.       tr "c2     City, State Zip      cc: c2"citystate" "zipcode
  57.       tr "ca     Voice Phone Number   cc: ca"voice
  58.       tr "c2     Data  Phone Number   cc: c2"data
  59.       tr "ca     Last Call Date/Time  cc: ca"lastcall
  60.       tr "n1r1cbData From ReVive Database r0cc:n1"
  61.       tr "cd     Unique Serial Number cc: cd"uid
  62.       tr "c5     User's Handle        cc: c5"handle
  63.       tr "cd     User's Password      cc: cd"password
  64.       se "n1   c6If the data from the cadatabase c6coincides with the existing "
  65.       se "data in the cbactual user accountc6, then it's caOK c6to cbReVive c6this "
  66.       se "account, but if the data in the account does c9NOT c6reflect the "
  67.       se "cfproper c6data for the c9DELETED c6user, then you should c9NOT c6attempt "
  68.       tr "to cbReVive c6this account.n1@4"
  69.       se "c6Should I cbReVive c6this account now? c7[cbNoc7]c9: ";gc;a=result
  70.       if a~="Y" then do;tr "cbNoc6.";savescratch (-it.i);iterate i;end
  71.       se "caYesc6, cbReVivingc6..."
  72.       address command "makedir mail:users/"maildir
  73.       setobject handle;putscratch 1
  74.       setobject password;putscratch 2
  75.       setobject uid;putscratch 41
  76.       setobject year;putscratch 1101094
  77.       setobject month;putscratch 1101095
  78.       setobject day;putscratch 1101096
  79.       savescratch it.i;tr "h6cbedc6!"
  80.       inuse=inuse+1;call SSDATA
  81.       if exists("mail:users2") then do
  82.         se "n1cbReVive ca"handle"'s ceUUCP Mail Directory c6too? c7[caYesc7]c9: "
  83.         gc;a=result;if a="N" then tr "cbNoc6.";else do;se "caYesc6, cbReVivingc6..."
  84.           address command "copy mail:users2/"maildir"/ mail:users/"maildir"/ all"
  85.           tr "h6cbedc6!";end;end
  86.     end i
  87.   call close(f1)
  88.  
  89. exit
  90. PARSE: procedure expose it.; arg rng,min,max
  91.    it.='';c=0;it=translate(rng,'  ','.,')
  92.     do a=1 to words(it);c=c+1;it.c=word(it,a)
  93.         if index(it.c,'-')>0 then do;parse var it.c x'-'y
  94.         if y='' then y=max;if x='' then x=min
  95.         if x>y then do;d=x;x=y;y=d;end
  96.         if x<min|y>max|~datatype(x,'W')|~datatype(y,'W') then do;c=c-1;iterate;end
  97.         do b=x to y;it.c=b;c=c+1;end;c=c-1;end
  98.     else if it.c<min|it.c>max|~datatype(it.c,'W') then do;c=c-1;iterate;end;end
  99.     do i=1 to c;it.0=it.0||it.i' ';end
  100.   return c
  101.  
  102. TITLE:;tr 'f1└─┐';tr '  └┐ ┌─┐   ┌──┐C█▀▀▀▄C█    █ ▄C▄▀▀▀▄C▄▀▀▀▄'
  103.   tr '┌──┘ │ └───┘┌─┴┐C█▄▄▄▀ ▄▀▀▄ █    █ ▄ █   █ ▄▀▀▄C▄▀C█   █'
  104.   tr '└─┐ ┌┘ ▄▄██▄▄└┐    █   █ █▀▀   █  █  █ ▀▄ ▄▀ █▀▀C▄▀▀C█   █'
  105.   tr '  │ │ ██▀   ▀██┘    ▀   ▀  ▀▀▀   ▀▀   ▀   ▀    ▀▀▀C▀▀▀▀▀  ▀   ▀▀▀'
  106.   tr ' ┌┘┌┘ ██C██  █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█'
  107.   tr ' │ │  ▀██▄▄▄▄██▀  █  Another lifesaving utility from Dotoran of Frontiers  █'
  108.   tr ' └─┘C▀▀▀▀C█▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█'
  109.  return
  110.  
  111. DOCS:
  112.   tr "f1cbReVivec6, c7vcf2.0 cdDocumentation cf- c6Page cb1 c7(c6of cb2c7)n1"
  113.   se "c6   When a user account is c9deleted c6in caCNet Amiga, v3.05cc6, it's not "
  114.   tr "caactually c9deletedc6, but cbslightly changedc6.n1"
  115.   se "   There are cdfour c6major pieces of information that are c9LOST c6during "
  116.   se "this processc9: caunique serial id numberc6, cbuser handlec6, cduser passwordc6, "
  117.   tr "and the ceuser's uucp mail directoryc6.n1"
  118.   se "   cbReVivec6, c7vcf2.0 c6keeps a constantly updated cadatabase c6containing the "
  119.   se "first cathree c6pieces of information listed above, so that if you ever "
  120.   se "wish to cd`cbrevivecd' c6one of these c9deleted c6accounts, you'll have copies "
  121.   se "of the camost recent information c6from these accounts to recreate the "
  122.   se "user account with. A new ceuucp mail directory c6will also be created "
  123.   se "for this user, as well as their cdlast call date c6being updated to "
  124.   tr "reflect the cfcurrent datec6.n1"
  125.   se "   Starting with this version, it is now possible to specify cfranges c6"
  126.   se "of id numbers you wish to cd`cbrevivecd'c6, so you may wish to initially hit "
  127.   se "your caENTER c6key to scan ceALL c6user accounts, then review each c9deleted c6"
  128.   tr "account to see if it should be cd`cbrevivedcd' c6or not.n1"
  129.   se "c7Press ccany key c7to continue...g1"
  130.   tr "f1cbReVivec6, c7vcf2.0 cdDocumentation cf- c6Page cb2 c7(c6of cb2c7)n1"
  131.   se "c6   Also starting with this version, the caneed to directly modify c6the "
  132.   se "values stored in the cd`cebbs.sdatacd' c6file is c9NOT c6needed. Because of "
  133.   se "this, it is cfno longer neccessary c6for you to reboot the computer "
  134.   tr "after reviving user accounts.n1"
  135.   se "   If enabled, you may also be asked if you wish to cd`cbrevivecd' c6a "
  136.   se "user's ceuucp directory's cfCONTENTS c6from a backup as well. Presently, "
  137.   se "an cbexact duplicate c6of your cd`cbmail:users/cd' c6directory can be maintained "
  138.   se "in your cd`cemail:cd' c6directory which contains the camost up to date c6"
  139.   tr "contents of said directories.n1"
  140.   tr "c7Press ccany key c7to start cbReVivec7, vcf2.0c7...g1"
  141.  signal REVIVE
  142.  
  143. RSDATA: ; call open(f1,"SysData:bbs.sdata","r")
  144.   do i=1 to 5 ; vd.i=c2d(readch(f1,4)) ; end i
  145.   call close(f1) ; inuse=vd.2 ; return
  146.  
  147. SSDATA: ; vd.2=inuse ; setobject vd.2 ; putuser 2400092
  148.   call open(f2,"SysData:bbs.sdata","w")
  149.   do ii=1 to 5 ; call writech(f2,d2c(vd.ii,4)) ; end ii
  150.   call close(f2) ; return
  151.  
  152. SYNTAX:;ERROR:;IOERR:;e1=' Error: 'rc' ('errortext(rc)')'
  153.   e2='  Line: 'left(sigl,4)'File:';gu 1311992;a=result;gu 1311960;b=result;c='"'a||b'"';e2=e2' 'c;tr e1;tr e2;logentry e1;logentry e2
  154.   e=sourceline(sigl);do while e~='';e3='Source: 'left(e,37);tr e3;logentry e3;e=substr(e,38);end;bufferflush;exit
  155. IERROR:;bb="`~!@#$%^&*()_-+=|\abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ[]{};':"d2c(34)",./<>?";return
  156. /** Last Edited: 29-Sep-95 ************************************************\
  157. \****************************************** Frontiers BBS (716)/823-9892 **/
  158.